The disclosure generally relates to the field of machine programming, and more particularly to an interface definition language compiler.
Many of the applications/services used today run in a heterogeneous computing environment. This environment includes operating systems, applications, extension, plug-ins, libraries, etc. Each of these entities can change at a relatively rapid pace, and may be changed by different owners of the entities. As an example, company A may develop an operating system on which a browser developed and maintained by company B runs. Company C develops and maintains an add-on to the browser. The add-on has dependencies on the browser, which has dependencies on the operating system. With dependencies among these entities, compatibility between entities can be broken due to some changes.
Semantic versioning is a versioning system used to track these changes and aid in identifying or preserving compatibility. In addition to an entity name, each entity is also identified with a three element version identifier in the format “Major.Minor.Patch.” The “Major” element is incremented for a major release. A major release is either a first release or a release that introduces any changes that impact backwards compatibility. The “Minor” element is incremented when new, backwards compatible changes are made to software that is released. The “Patch” element is incremented when backwards compatible error corrections (sometimes referred to as “bug fixes”) are made to software that is released. To illustrate, browser “ExampleBrowser 42.0.1” is the 42nd major release of the browser with 1 patch released for the 42nd major release. Referring to the previous example of the OS, browser, and browser add-on and using y and z to refer, respectively, to any minor version and any patch version: update from major version 41 to 42 of the ExampleBrowser may have broken compatibility with an add-on 2.y.z while a major update of the OS from version 7.y.z to version 8.0.0 broke compatibility with ExampleBrowser 41.y.z, which triggered the major release 42 of the ExampleBrowser.